
#pragma once

#include "ADMaterial.h"
#include "LinearInterpolation.h"

class Function;

class SelfHeatConductionADMaterial : public ADMaterial
{
public:
	SelfHeatConductionADMaterial(const InputParameters& parameters);

protected:
	virtual void initQpStatefulProperties();
	virtual void computeQpProperties();
	

private:
	void readFile();
	void check();

	std::string _property_file;
	unsigned int  _tpoint;
	Real _epsilon;
	const VariableValue& _temperature;
	ADMaterialProperty<Real>& _k;
	ADMaterialProperty<Real>& _cp;
	ADMaterialProperty<Real>& _rho;
	MaterialProperty<Real>& _epsilon_material;
	LinearInterpolation _func_roe_T;
	LinearInterpolation _func_k_T;
	LinearInterpolation _func_cp_T;
	std::vector<Real> _T_list;
	std::vector<Real> _roe_list;
	std::vector<Real> _k_list;
	std::vector<Real> _cp_list;

};

template<>
InputParameters validParams<SelfHeatConductionADMaterial>();
